Embodiments of the present invention relate to datacasting systems, apparatus, and methods, and more specifically, to coordinating server and client behavior for transporting a set of data objects over a unidirectional packet network under circumstances in which the set of data objects being transmitted changes from time to time. More specifically, embodiments of the present invention relate to transporting an object from a server to one or more clients such that bandwidth usage is optimized for the overall system to rapidly deliver objects to clients that are listening at the time when the object is published, while also providing coverage protection to other clients that may have difficulty in receiving the objects during the first phase of transmission. Thus, the present invention enables a datacasting system to effectively operate in a situation in which the set of objects being distributed, and hence the bandwidth requirements on the system, change over time, while maintaining a desired level of delivery quality of service for the client devices receiving the objects.
A number of protocols exist that are designed to facilitate the distribution of data objects (e.g., files, notifications, events, etc.) over a unidirectional network (e.g., IP multicast or broadcast, unicast UDP networks). For simplicity, such networks will be referred to generically in this description as “datacast networks”, and it will be understood that the term refers to the specific networks mentioned as well as similar data distribution networks. For packet-based technologies, the distribution of data objects involves object packetizing at the server (that is, breaking a data object into multiple smaller data packets), transmission over the network and reassembly of the data object from the packets at the client. The data objects are typically transmitted in the context of a logical session that is identified as part of the datacast protocol.
Datacasting algorithms must typically take into account a number of constraints or operating conditions. First, there is typically limited bandwidth due to, for example, constraints imposed by the transmission technology or medium as well as by the transmission network operator. Second, clients attempting to receive the packets may not receive all the packets, may not be continuously listening, or not be listening at the same time as one another. Both of these types of constraints become especially acute for wireless datacasting systems. In particular, wireless broadcast spectrum, and its associated bandwidth, are scarcer than other types of broadcast media. This scarcity often leads to tightly allocated usage of the broadcast spectrum, thus limiting overall bandwidth. Likewise, wireless clients are much less capable of listening in a continuous mode due to coverage problems or power consumption limitations.
One approach suited for file or data object distribution is to implement a datacast “carousel”. As typically implemented, a carousel contains a set of data objects each of which is transmitted in turn one after the other in a cyclical fashion. Objects may be added to or removed from the carousel from time to time, but the carousel repeatedly cycles through the transmission of the objects. With this mode of operation, any client that joins a datacast in progress will acquire all the objects if it listens long enough. For certain simple applications where the set of objects on the carousel do not change often, such as for “offline file delivery” applications, this technique may be adequate to provide a desired level of service.
One approach that that has been tried for improving the operating characteristics of a simple data carousel is to implement a “fast” and a “slow” carousel for file transmission. In this approach, the data objects are divided into two subsets based on a partitioning criterion such as validity time or priority. One subset, typically a relatively small one (one day out of a weekly schedule, for example) is inserted into the “fast” carousel which provides a faster transmission while the rest of the data objects are inserted into a “slow” carousel which provides a slower transmission. One of the disadvantages of this arrangement is that the bandwidth for the carousels is generally pre-allocated based on the amount of data the application anticipates will be in each subset. There is no automatic management of bandwidth or object allocation to carousels, and these parameters change only on occasions where the overall content of the set of carousels is changed.
Bandwidth utilization by the application and system is therefore not necessarily optimal using this approach. Another disadvantage of this arrangement is that the application providing the objects to be datacast must directly manage all aspects of this type of carousel, which makes the application more complicated to develop. Yet another disadvantage of this approach is that the corresponding client application must either listen to both carousels to get the complete set of data objects or be aware of some characteristic of the two carousels that enable the client application to more efficiently receive the desired objects. Typically, the client application directly manages this aspect of the listening behavior, so that it would require more complicated client application development. A further difficulty of this arrangement is that client applications generally are provided by multiple vendors; thus, making all client applications aware of the characteristics of the two carousels may require some form of coordination or standardization.
It is desirable that a client application acquire the transmitted data objects in the shortest time; however the acquisition time is inversely related to the available transmission bandwidth. It is also desirable to lower the processing requirements placed on the client application in order to preserve the battery life on the client device. As recognized by the inventors, existing approaches to the management of datacast services only effectively address certain types of static file or data object delivery sessions. Therefore, in circumstances where the type and number of such objects changes over time and the available bandwidth is limited, it would be desirable if the object delivery quality of service (DQoS) could be managed more precisely to optimize the balance between the acquisition time and available transmission bandwidth, while allowing the client application to receive the object with the highest probability (reliability) and minimal processing.
What is desired is a system, apparatus and method for more efficiently managing the distribution of data objects using a datacast system in the situation where the type and number of such objects changes over time, and which overcomes the noted disadvantages of present approaches to solving this problem.